#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Project    : AutomatedTesting
# @Name       : file_reader.py
# @IDE        : PyCharm
# @Author     : OneYoung
# @Created    : 2025/8/25 09:32
# @Desc       : 封装常用的文件读取方法

import os
import json
import yaml  # pip install pyyaml
from application.settings import UI_DATA_DIR, API_DATA_DIR
import pandas as pd


def ui_data_file(file_name):
    """
    获取UI测试数据文件路径

    :param file_name: 测试文件名称
    """
    return os.path.join(UI_DATA_DIR, file_name)


def api_data_file(file_name):
    """
    获取API测试数据文件路径

    :param file_name: 测试文件名称
    """
    return os.path.join(API_DATA_DIR, file_name)


def read_json(json_file, key=None):
    """
    读取json文件中的数据信息

    :param json_file: 文件路径
    :param key: 数据名称，为空则返回全部键值对
    """
    with open(json_file, 'r', encoding='utf-8') as f:
        values = json.load(f)
        values = values if values else {}
        value = values.get(key) if key else values
        return value


def read_yaml(yaml_file, key=None):
    """
    读取YAML文件中的数据信息

    :param yaml_file: 文件路径
    :param key: 数据名称，为空则返回全部键值对
    """
    with open(yaml_file, 'r', encoding='utf-8') as f:
        values = yaml.safe_load(f.read())
        values = values if values else {}
        value = values.get(key) if key else values
        return value


def read_txt(txt_file):
    """
    读取txt文件中的数据信息

    :param txt_file: txt文件
    """
    with open(txt_file, 'r', encoding='utf-8') as f:
        content = f.read()
    return content


def read_excel(excel_file, sheet_name='Sheet1'):
    """
    读取excel文件中的数据信息

    :param excel_file: Excel文件, 后缀为xlsx
    :param sheet_name: 读取那个Sheet工作表中的内容
    """
    # 读取文件
    datas = pd.read_excel(excel_file, sheet_name=sheet_name)
    # 将数据转换为字典
    data_dict = datas.to_dict(orient='records')
    return data_dict
